// JavaScript Document
function login(url, data, callback) {
	$.ajax({
		'url'			 : url,
		'type'			 : 'POST',
		'crossDomain'	 : true,
		'data'			 : data,
		'dataType': 'jsonp',
		'contentType': "application/json;utf-8",
		jsonpCallback:  callback,
		error :function(XMLHttpRequest, textStatus, errorThrown){
			eval(callback + '_error()');
		}
	});
}

(function($){
    $.loginDialog = {
		init:function(_option_) {
			$(_option_).click($.loginDialog.open)
		},
		open : function(){
			$.loginDialog.dialogOpen();
			return false;
	    },
		dialogOpen : function() {
			if ($( '#' + $.loginDialog.config.dialogId ).length < 1) {
				$.ajax({
					url: $.loginDialog.config.urlGetTemplate,
					dataType: 'text',
					cache: true,
					success: function(data, textStatus, jqXHR){
						$(data).appendTo('body').attr('id', $.loginDialog.config.dialogId);
						
						$('#' + $.loginDialog.config.dialogId).keypress(function(event){
							if (event.keyCode == 13) {
								$(this).dialog('option').buttons['登录旅人蕉']();
							}
						});
						
						$('#' + $.loginDialog.config.dialogId + ' input, #' + $.loginDialog.config.dialogId + ' img').tooltip({
							item : 'input[type="text"],input[type="password"], img',
							position: { my: "left+10 center", at: "right center" ,using: function( position, feedback ) {
				                    $( this ).css( position );
				                    $( "<div>◆<div>◆</div></div>" ).addClass( "arrow" ).addClass( feedback.vertical ).addClass( feedback.horizontal ).appendTo( this );
				                }
							},
							tooltipClass: 'info_tooltip'
						});
						$('#input_login_dialog_captcha').hover(function(){
							if ($('#input_login_dialog_captcha_image').css('visibility') == 'visible') {
								$('#input_login_dialog_captcha_image').tooltip('open');
							}
						},function(){
							$('#input_login_dialog_captcha_image').tooltip('close');
						}).focusin(function(){
                            if ($('#input_login_dialog_captcha_image').css('visibility') != 'visible') {
                            	$('#input_login_dialog_captcha_image').css('visibility', 'visible').click();
                            }
                        });
                        $('#input_login_dialog_captcha_image').click(function(){
							$('#input_login_dialog_captcha_image').attr('src', '/theme/image/transparent.gif');
							var captcha_image_object = new Image(),
							captcha_image_object_url = $.loginDialog.config.urlGetCaptcha + '&r=' + Math.random();
							
							$(captcha_image_object).ready ( function() {
	                            $('#input_login_dialog_captcha_image').attr('src', captcha_image_object_url);
							});
							captcha_image_object.src = captcha_image_object_url;
							
							 $('#input_login_dialog_captcha').focus();
                        });
						
						if ( $.cookie('remember_account') ) {
							$('#input_login_dialog_email').val( $.cookie('remember_account') );
						}
						
						$( '#' + $.loginDialog.config.dialogId ).dialog({
							'title' : '登录旅人蕉',
							'modal': true,
							'width': 600,
							'resizable': false,
							'autoOpen': false,
							'open': function() {
								if ($('#input_login_dialog_email').val() != '') {
									$('#input_login_dialog_pwd').focus();
								}
							},
							'close' : function() {
								$('#input_login_dialog_pwd').val('').tooltip('close').attr('title', '输入密码');
								$('#input_login_dialog_captcha').val('');
								$('#input_login_dialog_captcha_image').tooltip('close').attr({'title': '看不清楚，请点击换一张图片', 'src': '/theme/image/transparent.gif'}).css('visibility', 'hidden');
							},
							'buttons': {
								'登录旅人蕉': function(){
									var verify = true;
									if ( ! new RegExp("^\\w+((-\\w+)|(\\.\\w+))*\\@[A-Za-z0-9]+((\\.|-)[A-Za-z0-9]+)*\\.[A-Za-z0-9]+$").test( $('#input_login_dialog_email').val() ) ) {
										$('#input_login_dialog_email').focus();
										$('#input_login_dialog_email').attr('title', '输入的邮箱地址格式不正确').tooltip('open');
										verify = false;
									}
									else {
										$('#input_login_dialog_email').attr('title', '');
									}
									
									if ( ! new RegExp("^[A-Za-z0-9_\\.-]+$").test( $('#input_login_dialog_pwd').val() ) ) {
										if (verify)
											$('#input_login_dialog_pwd').focus();
										$('#input_login_dialog_pwd').attr('title', '输入的密码不正确').tooltip('open');
										verify = false;
									}
									else {
										$('#input_login_dialog_pwd').attr('title', '');
									}
									
									if ( ! new RegExp("^[A-Za-z0-9]{5}$").test( $('#input_login_dialog_captcha').val() ) ) {
										if (verify)
											$('#input_login_dialog_captcha').focus();
										if ($('#input_login_dialog_captcha_image').css('visibility') == 'visible') {
											$('#input_login_dialog_captcha_image').attr('title', '验证码为5个字母或数字').tooltip('open');
										}
										verify = false;
									}
									else {
										$('#input_login_dialog_captcha_image').attr('title', '');
									}
									
									if ( verify ) {
										var data = {
											email: escape($('#input_login_dialog_email').val()),
											password: escape($('#input_login_dialog_pwd').val()),
											captcha: escape($('#input_login_dialog_captcha').val())
										};
										if ($('#input_login_dialog_next_auto:checked').length) {
											data.save = 'true';
										}
										$.ajax({
											url: $.loginDialog.config.urlLogin,
											type: 'POST',
											crossDomain: true,
											data: data,
											dataType: 'jsonp',
											contentType: "application/json;utf-8",
											jsonpCallback:  '$_loginDialog_loginCallback',
											error:function(XMLHttpRequest, textStatus, errorThrown){
												alert('和服务器通讯发生错误', {title: '登录失败'});
											}
										});
									}
								},
								'关 闭': function(){
									$(this).dialog('close');
								}
							}
						}).dialog('open');
						$( '#' + $.loginDialog.config.dialogId ).find('.login_right > a').click(function(){
							$( '#' + $.loginDialog.config.dialogId ).dialog('close');
						});
					},
					error: function(a, b, c){
						alert(a);
					}
				});
			}
			else {
				$('#' + $.loginDialog.config.dialogId).dialog('open');
			}
		},
		loginCallback : function(jsonData) {
			if (jsonData.status != 1) {
				$('<div>').html(jsonData.data['text']).dialog({
					title: jsonData.data['title'],
					modal: true,
					minHeight: false,
					resizable: false,
					buttons: {
						'关闭': function(){
							$('#input_login_dialog_captcha').val('');
							$('#input_login_dialog_captcha_image').attr('src', $.loginDialog.config.urlGetCaptcha + '&r=' + Math.random());
							$('#input_login_dialog_email').focus();
							$(this).dialog("destroy");
						}
					}
				});
			}
			else {
				var acc_data = {
					'id': jsonData.data['account_id'],
					'email': jsonData.data['email'],
					'alias': jsonData.data['alias'],
					'gender': jsonData.data['gender'],
					'avatar': jsonData.data['avatar'],
					'token': jsonData.data['token']
				}, cookie_domain = 'tbanana.com';
				
				if (jsonData.data['domain'] != undefined) {
					cookie_domain = jsonData.data['domain'];
				}
				
				if (jsonData.data['expires'] != undefined) {
					$.cookie('account', $.toJSON(acc_data), {
						expires: jsonData.data['expires'],
						domain: cookie_domain,
						path: '/'
					});
				}
				else {
					$.cookie('account', $.toJSON(acc_data), {
						domain: cookie_domain,
						path: '/'
					});
				}
				
				if ($('#input_login_dialog_remember:checked').length) {
					$.cookie('remember_account', $('#input_login_dialog_email').val(), {
						expires: 365,
						domain: cookie_domain,
						path: '/'
					});
				}
				
				location.reload();
			}
		},
		config : {
			'dialogId' : 'global_login_dialog',
			'urlLogin' : '/index.php?route=login/login/login',
			'urlGetTemplate' : '/index.php?route=login/login/getDialogTemplate',
			'urlGetCaptcha' : '/index.php?route=common/captcha',
			'cookieDomain' : 'www.tbanana.com'
	    }
	}
})(jQuery);

$(function(){
	if ($.cookie('account')) {
		var acc_data = $.parseJSON($.cookie('account'));
		$('#login_mini').html('<a href="/index.php?route=user/home">' + acc_data.alias + '</a>');
		$('#register_mini').html('<a href="/index.php?route=login/login/logout&redirectURL=' + encodeURIComponent(location.href) + '">退出帐户</a>');
	}
	
	$.loginDialog.init('.login_dialog_button');
});
function $_loginDialog_loginCallback(data) { $.loginDialog.loginCallback(data); }